package PodsumowaniaLingwistyczne;

import java.util.LinkedList;
import java.util.List;

import ZmiennaLingwistyczna.WartoscLingwistycznaTypu2;
import csvIO.CsvRow;

public class KwalifikatorZlozonyTypu2AND implements IKwalifikatorTypu2 {
	
	private IKwalifikatorTypu2 kwalifikatorLewy;
	private IKwalifikatorTypu2 kwalifikatorPrawy;

	public KwalifikatorZlozonyTypu2AND(IKwalifikatorTypu2 kwalifikatorLewy, IKwalifikatorTypu2 kwalifikatorPrawy) {
		super();
		this.kwalifikatorLewy = kwalifikatorLewy;
		this.kwalifikatorPrawy = kwalifikatorPrawy;
	}
	
	@Override
	public List<IKwalifikatorTypu2> getKwalifikatorySkladowe() {
		List<IKwalifikatorTypu2> lista = new LinkedList<IKwalifikatorTypu2>();

		if (kwalifikatorLewy instanceof KwalifikatorTypu2) {
			lista.add(kwalifikatorLewy);
		} else {
			lista.addAll(kwalifikatorLewy.getKwalifikatorySkladowe());
		}
		if (kwalifikatorPrawy instanceof KwalifikatorTypu2) {
			lista.add(kwalifikatorPrawy);
		} else {
			lista.addAll(kwalifikatorPrawy.getKwalifikatorySkladowe());
		}
		return lista;
	}

	@Override
	public WartoscLingwistycznaTypu2 getWartoscLingwistyczna() {
		throw new UnsupportedOperationException("Te metode mozna wywolac tylko w niezlozonym kwalifikatorze.");
	}

	@Override
	public float getPrzynaleznosc(CsvRow krotka) {
		return Math.min(kwalifikatorLewy.getPrzynaleznosc(krotka), kwalifikatorPrawy.getPrzynaleznosc(krotka));
	}
	
	public String toString(){
		return kwalifikatorLewy.toString() + " i " + kwalifikatorPrawy.toString();
	}
	
	@Override
	public int getIndeksPolaKrotki() {
		throw new UnsupportedOperationException();
	}

}
